from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# selenium 体验
'''
# 打开Chrome浏览器
driver = webdriver.Chrome()
# 浏览器最大化
driver.maximize_window()
time.sleep(2)
# 输入网址 完整的网址
driver.get('https://www.baidu.com')
# 在搜索框输入关键字
time.sleep(2)
kw = driver.find_element(By.ID, 'kw')
kw.send_keys('天气')
# 点击搜索按钮
time.sleep(2)
su = driver.find_element(By.ID, 'su')
su.click()
time.sleep(2)
# 关闭浏览器
driver.quit()
'''

# chrome 驱动使用
'''
# 打开Chrome浏览器
driver = webdriver.Chrome()
# 关闭Chrome浏览器
time.sleep(2)
driver.quit()
'''

# firefox 驱动使用
'''
# 打开firefox浏览器
driver = webdriver.Firefox()
# 退出浏览器
time.sleep(2)
driver.quit()
'''

# selenium 案例 面向过程
'''
# 1.打开Chrome
driver = webdriver.Chrome()
# TODO 2.输入百度网址，必须是完整的网址
driver.get('https://www.baidu.com')
# TODO 3.获取搜索框输入关键字 ’天气预报‘，并点击百度按钮
kw = driver.find_element(By.ID, 'kw')
kw.send_keys('天气预报')
time.sleep(2)
driver.find_element(By.ID, 'su').click()
# TODO 4.获取页面标题，并打印
time.sleep(2)
print(driver.title)
# 5.检查’python‘是否在标题中
if 'python' in driver.title:
    print('python')
else:
    print('不在标题中')
# 6.关闭Chrome浏览器
time.sleep(2)
driver.quit()
'''


# selenium 案例 面向对象
'''
class TestCase:
    # 初始化打开Chrome浏览器
    def __init__(self):
        self.driver = webdriver.Chrome()

    def get_baidu(self):
        time.sleep(2)
        # 打开百度
        self.driver.get('https://www.baidu.com')
        # 输入关键字‘天气’
        self.driver.find_element(By.ID, 'kw').send_keys('天气')
        # 点击百度按钮
        self.driver.find_element(By.ID, 'su').click()
        time.sleep(10)
        # 打印标题
        print(self.driver.title)
        # 判断‘python’是否在标题中
        if 'python' in self.driver.title:
            print('ok')
        else:
            print('no')

    def sogou(self):
        time.sleep(2)
        # 打开搜狗搜索
        self.driver.get('https://www.sogou.com')
        # 定位搜索框，输入关键字’天气‘
        self.driver.find_element(By.ID, 'query').send_keys('天气')
        # 定位搜索按钮，并点击
        self.driver.find_element(By.ID, 'stb').click()
        # 打印标题
        time.sleep(2)
        print(self.driver.title)
        # 判断’python‘是否在标题中
        if 'python' in self.driver.title:
            print('ok')
        else:
            print('no')

    def quit(self, seconds=2):
        time.sleep(seconds)
        self.driver.quit()


# 调用
case = TestCase()
# case.get_baidu()
case.sogou()
case.quit()
'''

# 移动端方式打开浏览器
'''
# TODO 准备配置项
# 设置手机型号
mobileEmulation = {'deviceName':'iPhone SE'}
# 创建options对象
options = webdriver.ChromeOptions()
# 添加选项配置信息
options.add_experimental_option('mobileEmulation', mobileEmulation)
# TODO 打开浏览器，配置选项对象
driver = webdriver.Chrome(options=options)
# 访问网址
driver.get('https://www.baidu.com')
# 退出浏览器
time.sleep(2)
driver.quit()
'''

# 无头模式打开浏览器
'''
# TODO 选项对象，添加参数
a = webdriver.ChromeOptions()
a.add_argument('-headless')
# TODO 打开浏览器，设置选项
driver = webdriver.Chrome(options=a)
# 访问百度
driver.get('https://www.baidu.com')
# 打印网页标题
# time.sleep(2)
print(driver.title)
# 退出浏览器
driver.quit()
'''

# 浏览器操作
'''
class BrowserOperation:
    # 打开浏览器，访问百度
    def __init__(self):
        self.driver = webdriver.Chrome()
        self.driver.get('https://www.baidu.com')
    # 关闭浏览器
    def quit(self):
        time.sleep(2)
        self.driver.quit()
    # 浏览器窗口大小设置
    def window_size(self):
        #设置具体尺寸
        time.sleep(2)
        self.driver.set_window_size(480, 800)
        #浏览器最大化
        time.sleep(2)
        self.driver.maximize_window()
        #浏览器最小化
        time.sleep(2)
        self.driver.minimize_window()

    # 浏览器前进和后退
    def forward_and_back(self):
        #后退
        time.sleep(2)
        self.driver.back()
        #前进
        time.sleep(2)
        self.driver.forward()
    # 刷新浏览器
    def refresh(self):
        time.sleep(2)
        self.driver.refresh()


    # 关闭当前标签页
    def close(self):
        time.sleep(2)
        # 用链接文本方式定位新闻，并点击打开新闻页
        self.driver.find_element(By.LINK_TEXT, '新闻').click()
        # 关闭当前标签页（百度首页）
        time.sleep(2)
        self.driver.close()


b = BrowserOperation()
b.window_size()
b.forward_and_back()
b.refresh()
b.close()
b.quit()
'''
